草庐IT

c++ - unique_ptr VS auto_ptr

全部标签

c++ - 在 OpenCV (C++) 中检测球/圆

我正在尝试在过滤后的图像中检测球。在此图像中,我已经删除了不能成为对象一部分的内容。当然,我尝试了HoughCircle函数,但没有得到预期的输出。要么它没有找到球,要么检测到的圆圈太多。问题是球不是完全圆的。截图:我的想法是,如果我识别单个对象,计算它们的中心并检查不同方向的半径是否大致相同,它就可以工作。但是,如果他不完全可见,它也能检测到球,那就太好了。使用这种方法我无法检测到半圆或类似的东西。编辑:这些图像来自视频流(实时)。我还可以尝试其他什么方法? 最佳答案 看起来您使用了差分成像或类似的方法来获取您拥有的图像……?与其

c++ - 使用 dup2 将 stdout 与文件描述符交换并再次返回

代码如下:intmain(){std::cout我希望发生的是将“Instdout”打印到stdout,将“Inbuffer”打印到buffer.txt,然后再将“Instdout”打印到stdout。上面代码中实际发生的是“Instdout”被打印到stdout,“Inbuffer”被打印到buffer.txt”,但最后一个“Instdout”消息却无处可寻。 最佳答案 您需要做的就是将最后一个dup2()更改为:dup2(output,stdoutBack);为了...dup2(stdoutBack,1);您实际需要做的是将旧s

c++ - 将 unique_ptr 的 vector 传递给对象。 vector 成为成员变量。正确的做法?

我将称之为“所有者”的一个对象在其生命周期内拥有数据对象vector的明确所有权。这些存储为unique_ptr的vector。一个对象/类,称为“Output”,需要在许多不同的方法中查看这些数据对象,因此某种引用/指针/变量是“Output”的成员变量.Output在其构造函数中接收数据对象的vector。我想到了三种方法来实现这一点。最好的方法是什么?选项1-“输出”对象将数据vec存储为常量引用:classOutput{//outputwantsthedata:public:Output(std::vector>const&in):my_lot_of_data(in){};st

c++ - 使用 shared_ptr<void> 初始化结构

我一直遇到一个错误nomatchingconstructorforinitializationof'std::shared_ptr'这是有道理的,但我不知道从哪里开始。这是我正在使用的。#includestructContainer{inttype;std::shared_ptrpayload;Container(intt,constvoid*p):type(t),payload(p){}};intmain(){return0;}我正在尝试使用shared_ptr制作一个通用容器类型为void.我打算对类型进行切换,然后将有效负载转换为适当的类型。我想我可以做类似Containerct

c++ - 具有 unique_ptr 作为成员的 C++ 模板的构造函数失败

当类模板包含指向另一个类的unique_ptr时,该类的构造函数不会将unique_ptr移动到新对象中。使用相同的类,但没有模板,构造函数按预期生成对象。#includeclasstest1{public:std::strings_;test1(std::strings):s_(s){};};classtestu{public:std::unique_ptrus_;testu(std::unique_ptrus):us_(std::move(us)){};};templateclasstestt{public:std::unique_ptrus_;testt(std::unique_

c++ - 将结构视为数据类型是否准确?

根据我对数据类型的理解:计算机只能存储0和1,不能存储负数、实数、字符等。所以发明了数据类型来表示(编码)这些类型数据作为一组0和1,然后在需要时对其进行解码。但是结构呢:structStudent{intage;floatgpa;};Students1;s1.age=17;s1.gpa=3.42;Students2;s2.age=16;s2.gpa=3.64;这看起来像是一个工具,所以我不必写:intstudent1_age=17;floatstudent1_gpa=3.42;intstudent2_age=16;floatstudent2_gpa=3.64;那么将Student视为

c++ - "double"的操作和 C 中的优化

我最近分析了一段用VS2005编译的旧代码,因为在“调试”(无优化)和“发布”(/O2/Oi/Ot选项)编译中存在不同的数值行为。(简化的)代码如下所示:voidf(doublex1,doubley1,doublex2,doubley2){doublea1,a2,d;a1=atan2(y1,x1);a2=atan2(y2,x2);d=a1-a2;if(d==0.0){//NOTE:Iknowthat==onrealsis"evil"!printf("EQUAL!\n");}函数f如果使用相同的值对调用(例如f(1,2,1,2)),则预计会打印“EQUAL”,但这并不总是发生在“发布”中

c++ - 结构包装。有没有自动的方法来做到这一点?

问题:是否有自动进行结构打包的方法?背景:Structurepacking对于降低某些基本数据的内存成本非常有用。基本上,这是通过重新排序内部数据来实现最小内存成本的技巧。我的问题是有没有一种自动方法可以做到这一点?比如我这里有一个structFoo(假设32bit)structFoo{charflag;char*p;shortnumber;};经过自动检查(是否为脚本,是否为native),我应该得到Foo的内存优化版本,即:structFoo{char*p;shortnumber;charflag;};这只是一个玩具示例。考虑下面更困难的情况,手动重新排序将是一项相当大的工作。结构

c++ - 括号中的 C 数组索引

我碰巧在FDKAAC音频编解码器中看到quantSpec[(1024)]。它是用C、C++编写的。括号是什么意思?是不是和quantSpec[1024]一样? 最佳答案 没有任何意义,它们完全一样。 关于c++-括号中的C数组索引,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/29068393/

C++ EOF 命名空间

那么,出于好奇,为什么EOF没有定义命名空间?为什么不是::EOF或std::EOF?#includewhile(std::scanf("%s",someStr)!=::EOF);//nopewhile(std::scanf("%s",someStr)!=std::EOF);//nopewhile(std::scanf("%s",someStr)!=EOF);//herewego 最佳答案 EOF是中定义的预处理器宏(在C头文件中也可用于C++)。预处理器宏在源代码实际编译之前对源代码进行文本替换。因此,预处理器宏不是可以出现在任何